package com.lyun.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lyun.bo.EachLoveBo;
import com.lyun.bo.FriendsBo;
import com.lyun.pojo.EachLove;
import com.lyun.vo.LoveCountVo;

import java.util.List;

public interface EachLoveService extends IService<EachLove> {
    Integer getEachLoveCount(Long selfId);

    Integer getLoveCount(Long selfId);

    Integer getFanCount(Long selfId);

    List<Long> getLoveIdsList(Long id);

    /**
     * 查询与userId互相关注的用户idList
     * 根据 page 和 pageSize 分页
     * @param bo
     * @return
     */
    List<Long> getEachLoveIdsList(EachLoveBo bo);

    List<Long> getFanIdsList(Long id);

    boolean getAlreadyLoveByUserIdAndToId(long id, Long uid);

    void insertOrUpdate(Long id, Long toId);

    void removeBySelfIdAndUserId(Long id, Long toId);

    /**
     * 查询用户关注信息
     *
     * @param page     当前页
     * @param pageSize 页面大小
     * @param userId   用户id
     */
    Page<EachLove> selectLovePage(Integer page, Integer pageSize, Long userId);

    /**
     * 查询用户粉丝信息
     *
     * @param page     当前页
     * @param pageSize 页面大小
     * @param userId   用户id
     */
    Page<EachLove> selectFansPage(Integer page, Integer pageSize, Long userId);

    /**
     * 获取粉丝id列表
     * @param bo
     * @return
     */
    List<Long> getFanIdsListWithPage(FriendsBo bo);

    /**
     * 获取用户粉丝、喜欢数
     *
     * @param userId
     * @return
     */
    LoveCountVo selectCount(Long userId);
}
